home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / src / alib / amigalib / createextio.c < prev    next >
C/C++ Source or Header  |  1994-02-18  |  1KB  |  55 lines

  1.  
  2. /*
  3.  *  CreateExtIO.C   (1.3/2.0) (for 2.0 only apps use CreateIORequest())
  4.  */
  5.  
  6. #include <exec/types.h>
  7. #include <exec/ports.h>
  8. #include <exec/memory.h>
  9. #include <exec/io.h>
  10. #ifdef INCLUDE_VERSION        /*    2.0 */
  11. #include <clib/exec_protos.h>
  12. #include <clib/alib_protos.h>
  13. #else
  14. extern void *AllocMem(long, long);
  15. extern void FreeMem(void *, long);
  16. #endif
  17.  
  18. #ifndef HYPER
  19. #define HYPER
  20. #endif
  21.  
  22. typedef struct MsgPort    MsgPort;
  23. typedef struct IORequest IORequest;
  24. typedef struct IOStdReq  IOStdReq;
  25.  
  26. IORequest *
  27. HYPER ## CreateExtIO(replyPort, size)
  28. MsgPort *replyPort;
  29. long size;
  30. {
  31.     IORequest *io = NULL;
  32.  
  33.     if (replyPort) {
  34.     if (io = AllocMem(size, MEMF_PUBLIC | MEMF_CLEAR)) {
  35.         io->io_Message.mn_ReplyPort = replyPort;
  36.         io->io_Message.mn_Length = size;
  37.         io->io_Message.mn_Node.ln_Type = NT_REPLYMSG;
  38.     }
  39.     }
  40.     return(io);
  41. }
  42.  
  43. void
  44. DeleteExtIO(io)
  45. IORequest *io;
  46. {
  47.     if (io) {
  48.     long bad = -1;
  49.     io->io_Message.mn_Node.ln_Succ = (void *)bad;
  50.     io->io_Device = (void *)bad;
  51.     FreeMem(io, io->io_Message.mn_Length);
  52.     }
  53. }
  54.  
  55.